From d79249b629a1fb532a16c2c9d60717afaf7a204a Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Thu, 26 Jan 2017 13:43:13 -0800 Subject: [PATCH] Add build script rerun-if-changed dependencies Also pick up the rerun-if-changed dependencies from build scripts. --- src/cargo/ops/cargo_rustc/output_depinfo.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/cargo/ops/cargo_rustc/output_depinfo.rs b/src/cargo/ops/cargo_rustc/output_depinfo.rs index 5ed98eb11..188956187 100644 --- a/src/cargo/ops/cargo_rustc/output_depinfo.rs +++ b/src/cargo/ops/cargo_rustc/output_depinfo.rs @@ -27,6 +27,7 @@ fn add_deps_for_unit<'a, 'b>(deps: &mut HashSet, context: &mut Context< } visited.insert(unit.clone()); + // Add dependencies from rustc dep-info output (stored in fingerprint directory) let dep_info_loc = fingerprint::dep_info_loc(context, unit); if let Some(paths) = fingerprint::parse_dep_info(&dep_info_loc)? { for path in paths { @@ -34,7 +35,15 @@ fn add_deps_for_unit<'a, 'b>(deps: &mut HashSet, context: &mut Context< } } - // recursively traverse all transitive dependencies + // Add rerun-if-changed dependencies + let key = (unit.pkg.package_id().clone(), unit.kind); + if let Some(output) = context.build_state.outputs.lock().unwrap().get(&key) { + for path in &output.rerun_if_changed { + deps.insert(path.into()); + } + } + + // Recursively traverse all transitive dependencies for dep_unit in &context.dep_targets(unit)? { let source_id = dep_unit.pkg.package_id().source_id(); if source_id.is_path() { -- 2.30.2